package com.gccloud.design.service;

import com.gccloud.design.dto.SdRepoParticipantConfDto;
import com.gccloud.design.entity.SdRepoParticipantConfEntity;
import com.gccloud.design.vo.SdRepoParticipantConfVo;
import com.gccloud.starter.mybatis.page.PageVO;

import java.util.List;
import java.util.Map;

/**
 * @author wu.yumin
 * @version 1.0.0
 * @Description 环节参与人配置
 * @date 2021/6/29 15:25
 */
public interface SdParticipantConfService {
    /**
     * 批量新增环节参与人
     *
     * @param list 环节参与人集合
     * @return boolan
     */
    boolean batchSaveParticipant(List<SdRepoParticipantConfEntity> list);

    /**
     * 根据环节id删除参与人配置
     *
     * @param repoId 环节定义ID
     * @return boolean
     */
    boolean deleteParticipantByRepoId(String repoId);

    /**
     * 环节参与者配置：分页查询环节参与者
     *
     * @param repoId       环节实例ID
     * @param pageObj      分页对象
     * @param activityName 环节名称
     * @return Map<String, Object>
     * @describe 基于环节实例ID分页查询环节参与者
     */
    Map<String, Object> getParticipantByRepoId(String repoId, String activityName, PageVO pageObj);

    /**
     * 环节参与者配置：查询环节参与者
     *
     * @param activityName 环节名称
     * @param repoId       环节定义ID
     * @return 环节参与人列表
     */
    List<SdRepoParticipantConfVo> getParticipantListByRepoId(String repoId, String activityName);

    /**
     * 环节参与者配置：保存环节参与者
     *
     * @param sdRepoParticipantConfDtos 环节参与者实体的List
     * @return true/false
     * @describe
     */
    boolean saveParticipant(List<SdRepoParticipantConfDto> sdRepoParticipantConfDtos);

    /**
     * 环节参与者配置：修改环节参与者
     *
     * @param sdRepoParticipantConfDto 环节参与者实体
     * @return true/false
     * @describe
     */
    boolean updateParticipant(SdRepoParticipantConfDto sdRepoParticipantConfDto);

    /**
     * 环节参与者配置：基于环节参与者ID删除环节参与者
     *
     * @param participantConfId 环节参与者ID
     * @return true/false
     * @describe
     */
    boolean removeParticipantConfByParticipantConfId(Integer participantConfId);

    /**
     * 环节参与者配置：查询环节参与者，到人
     *
     * @param activityName 环节名称
     * @param repoId       环节定义ID
     * @return 环节参与人列表
     */
    List<SdRepoParticipantConfVo> getStaffListByRepoId(String repoId, String activityName);

}
